package ar.edu.utn.frba.date.formater;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;

public class Flexible extends Formateador {
	
	private Collection<FormateadorSimple> formateadores;

	public Flexible() {
		formateadores=new ArrayList<FormateadorSimple>();
	}

	public void setFormateadores(Collection<FormateadorSimple> formateadores) {
		this.formateadores = formateadores;
	}

	public Collection<FormateadorSimple> getFormateadores() {
		return formateadores;
	}

	/**
	 * Convierte una fecha string a date,utilzando los formaters que conoce
	 * 
	 * @author David Desposito
	 * @version 1.0
	 * @param fechaEntrada: fecha a convertir
	 * @return fechaPareseada: fecha convertida(null en caso de no tener el formater correspondiente)
	 * @throws ParseException 
	 * @throws ParseException 
	 */
	@Override
	public Date convertir(String fechaEntrada) throws ParseException {
		Date fechaParseada = null;
		for (FormateadorSimple formateador : formateadores) {
			try{
				fechaParseada=formateador.convertir(fechaEntrada);
			}catch (ParseException e) {
				System.out.println("Parser inapropiado,en caso de haber mas se intentara con el proximo");
			}
		}
		/*
		 * si la fecha es null es por que ninguno la pudo parsear,como los parseadores lanzan parseException
		 * si no pudieron parsear,hacemos lo mismo aca para mantener el mismo comportamiento.
		 */
		if(fechaParseada==null){
			throw new ParseException("",0);
		}
		return fechaParseada;
	}
	
	
}
